
package dao.BankDao;

import common.model.Entity.bankEntity.Transaction;
import dao.BaseDao;

import java.time.LocalDateTime;
import java.util.List;

/**
 * {@code TransactionDao} 接口定义了对交易记录实体 {@link Transaction} 的数据访问操作。
 * <p>
 * 可扩展基础的 {@link BaseDao} 功能，并提供交易相关的查询与插入方法。
 * </p>
 */
public interface TransactionDao {

    /**
     * 根据账户 ID、时间范围和交易类型查询交易记录。
     *
     * @param accountId       账户 ID
     * @param startTime       查询的起始时间（包含）
     * @param endTime         查询的结束时间（包含）
     * @param transactionType 交易类型（例如：0 表示存款，1 表示消费），传 {@code null} 表示不限制类型
     * @return 满足条件的交易记录列表，如果没有符合条件的记录则返回空列表
     */
    List<Transaction> findTransactionsByAccountId(Long accountId,
                                                  LocalDateTime startTime,
                                                  LocalDateTime endTime,
                                                  Integer transactionType);

    /**
     * 插入一条新的交易记录。
     *
     * @param transaction 交易记录对象
     * @return 是否插入成功
     */
    boolean insertTransaction(Transaction transaction);
}
